/**
 * 
 */

package CCT220_Aula10_Exercício01_13106;

/**
 * Project CCT220:CCT220_Aula10_Exercício01_13106
 * 
 * @author marcel
 * @author 13106
 * 
 * 
 *         20/09/2011
 */
public class FracaoMista extends Fracao {

	int parteInteira;


	/**
	 * Construtor
	 */
	public FracaoMista() {

		super();
		parteInteira = 0;
	}


	/**
	 * Construtor
	 * 
	 * @param pa
	 * @param num
	 * @param den
	 */
	public FracaoMista(int pa, int num, int den) {

		super(num, den);
		parteInteira = pa;
	}


	/**
	 * Metodo que adiciona uma fracao mista a este
	 * objeto de fracao mista
	 * 
	 * @param frac
	 */
	public void adiciona(FracaoMista frac) {

		parteInteira += frac.parteInteira;
		numerador = numerador * frac.denominador + denominador * frac.numerador;
		denominador *= frac.denominador;
	}// fim adiciona


	/**
	 * Metodo que ajusta a fracao mista
	 */
	public void ajustaFracao() {

		int tmp = 0;
		double num = numerador, den = denominador;
		if (num / den > 1) {
			tmp = numerador / denominador;
			parteInteira += tmp;
			numerador -= tmp * denominador;
		}
	}// fim ajustaFracao


	/*
	 * (non-Javadoc)
	 * 
	 * @see Fracao_13106_15584.Fracao#toString()
	 */
	@Override
	public String toString() {

		simplificaFracao();
		ajustaFracao();
		if (numerador == denominador) {
			return (parteInteira + 1 + " ");
		} else if (parteInteira == 0) {
			return super.toString();
		} else {
			return (parteInteira + " " + numerador + "/" + denominador);
		}

	}// fim toString

}
